package basic.courseLearn09.problem;

import org.junit.Test;

//贝诺塔问题
public class BenottaProblem {

    /**
     * 将第i个盘子从from柱子移动到to柱子，其他柱子作为辅助柱子
     * @param i 第i个盘子的编号
     * @param from 出发柱子
     * @param to 目的柱子
     * @param other 辅助柱子
     * @return void
     */
    public void solution(int i,int from,int to ,int other){
        //1. 递归截止条件
        if (i==1){
            System.out.println("第"+i+"个盘子从"+from+"柱子移动到"+to+"柱子");
            return;
        }
        //2. 将前i-1个盘子从from柱子移动到other柱子
        solution(i-1,from,other,to);
        //3. 将第i个盘子从from柱子移动到to柱子
        System.out.println("第"+i+"个盘子从"+from+"柱子移动到"+to+"柱子");
        //4. 将i-1个盘子从other柱子移动到to柱子
        solution(i-1,other,to,from);
    }

    @Test
    public void test(){
        int n = 3;
        solution(n,1,3,2);
    }





}
